var driverList; //	DIV со списком вродителей
var driversFooter; //	<p> с кнопкой добавления водителя и выбора Мультидрайв
var multiDriveFromButton = false; //	true, если функция удаления водителей вызвана через кнопку "выбрать мультидрайв"							
var multiDrive = false; //	Флаг, указывающий, что пользователь выбрал Мультидрайв
var city;
var carsXML = false;
//	Переменная для уникализации ссылок на xml файлы
var rand = new Date();
var xml;
var selectCar, select, selectCarAge, selectCarPower, carPrice;
var manufacturerName = '',
	carName = '',
	price = '',
	carAge = 'г.в.',
	carPower = '',
	selectedFr;
var cascoFinished = 0;
var countDrivers = 0;
var driverArray = [];
var expanded = false;
var osagoFirst = true; //	Флаг, что осаго считается в первый раз за сессию
var guarantee; //	checkbox с выбором пункта "Машина на гарантии"
var newCar; //	checkbox с выбором пункта "Новая машина"
var rus; //	Является ли машина Отечественного производства
var tabIndex = 100; //	Для таблуляции между input списка Водителей
var registeredUser = false;
var UserClickedCalculation = false;
var UserClickedAddToFavorites = false;
var kaskoDiscount = 0;
var osagoDiscount = 0;
var pe = false;
var pi = '';
var forbiddenCalculation = false;
//	ul элементы выпадающих списков
var resultLists;
//	Последний выделенный пункт выпадающего списка
var activeLi;
//	Необходимость пересчета точек на слайдере
var priceChanged = true;
var firstCalculation = true;
// Нужно ли делать скролл к таблице при пересчете
var toScroll = true;
// аналогично
var toResults = true;
//
var SKIndex = 0;
var emailText = '';
//	Список противоугонных систем для сохранения в БД и письма с заказом
var alarmText = '';
//	генерируемый URI ссылки на расчет Каско. Также для сохранениея в кукисах
var clientURL = '';
//	значение франшизы по умолчанию при загрузке сайта
var defaultFr = 20000;
var immobilizer, transponder, satellite, alarm0, alarm1, alarm2, alarm3, alarm5, alarm6;
var testVar = 0;
var defaultUrl = true;
var manList;

//	Форматирование  строки. вставляет пробелы каждые 3 порядка числа

function addSpaces(obj) {
	var str = obj,
		str1 = new String(""),
		output = "",
		k = 0;
	var mainTailStartIndex = str.indexOf('.');
	if (mainTailStartIndex > 0) {
		mainTail = str.substr(mainTailStartIndex);
		str = str.substr(0, mainTailStartIndex);
	} else mainTail = '';
	if (str == null || str == '') str = '';
	for (var i = 0; i < str.length; i++) {
		if (parseInt(str.charAt(i)) >= '0' && parseInt(str.charAt(i)) <= '9') {
			str1 += str.charAt(i);
			k++;
		}
	}
	if (k > 3) {
		var l = k % 3;
		var tail = "";
		if (l != 0) {
			output = str1.substr(0, l);
			tail = str1.substr(l, str1.length - l);
			for (var m = 0; m < (k - l) / 3; m++) {
				output += " ";
				output += tail.substr(0, 3);
				tail = tail.substr(3, str1.length - l - 1 - 3 * (m));
			}
			obj.value = output;
			return output + mainTail;
		} else {
			output = str1.substr(0, 3);
			tail = str1.substr(3, str1.length - 3);
			for (var m = 1; m < k / 3; m++) {
				output += " ";
				output += tail.substr(0, 3);
				tail = tail.substr(3, str1.length - l - 1 - 3 * (m));
			}
			return output + mainTail;
		}
	} else
	return str1 + mainTail;
}
//   Получения уникального id для водителей

function testCookies() {
	if (typeof document.cookie == "string") if (document.cookie.length > 0) return true;
	else {
		document.cookie = "testCookies=cookie";
		if (document.cookie.length > 0) return true;
		else
		return false;
	} else
	return false;
}

function checkRef() {
	var id;
	var arr;
	if ((getVarValueFromURL(document.location, "ref") != null || getVarValueFromURL(document.location, "i") != null) && getCookie("id") != null) {
		var refVal;
		if (getVarValueFromURL(document.location, "i") != null) refVal = getVarValueFromURL(document.location, "i");
		else
		refVal = getVarValueFromURL(document.location, "ref");
		//			alert(getVarValueFromURL(document.location,"i"));
		arr = {
			action: "checkRef",
			ref: refVal,
			id: getCookie("id")
		}
	}
	$.post("post.php", arr, function (data) {;
	});
}

function checkClientId() {
	if (testCookies()) {
		if (getCookie("id") == "") setClientIdAndRefferer();
		else
		checkRef();
		registeredUser = true;
	}
}

function setClientIdAndRefferer() {
	var id;
	var arr;
	var referer = '';
	if (getVarValueFromURL(document.location, "ref") != null || getVarValueFromURL(document.location, "i") != null) {
		if (getVarValueFromURL(document.location, "ref") != null) referer = getVarValueFromURL(document.location, "ref");
		else
		referer = getVarValueFromURL(document.location, "i");
		arr = {
			action: "getId",
			ref: referer
		}
	} else arr = {
		action: "getId"
	};
	$.post("post.php", arr, function (data) {
		//			alert(data);
		var div = $("<div></div>");
		id = div.html(data).find("#newId").eq(0).text();
		if (typeof id != 'undefined' && id.length > 0) {
			var oDate = new Date();
			oDate.setFullYear(oDate.getFullYear() + 5);
			document.cookie = "id=" + id + "; expires=" + oDate.toGMTString();
		}
	}, "html");
	if ((typeof(id) != 'undefined') && id.length > 0) return true;
	else
	return false;
}

function deleteCarCookies() {
	var oDate = new Date();
	oDate.setFullYear(oDate.getFullYear() - 1);
	for (var i = 1; i < 6; i++) document.cookie = "car" + i + "=; expires=" + oDate.toGMTString();
}

function deleteCookie(name) {
	var oDate = new Date();
	oDate.setFullYear(oDate.getFullYear() - 1);
	document.cookie = encodeURI(name) + "=" + "; expires=" + oDate.toGMTString();
}

//	Установка флага, что пользователь начал расчет

function setClickedCalculation() {
	var arr = {
		action: "clickedCalculate",
		id: getCookie("id")
	}
	$.post("post.php", arr, function (data) {
		var div = $("<div></div>");
		id = div.html(data).find("#clicked").eq(0).text();
		if (typeof(id) == "string" && id.length > 0) UserClickedCalculation = true;
	}, "html");

	if (UserClickedCalculation) return true;
	else
	return false;
}

//	Установка флага, что пользователь нажал кнопку сделать заказ

function setClickedMakeOrder() {
	var arr = {
		action: "clickedMakeOrder",
		id: getCookie("id")
	};
	$.post("post.php", arr, function (data) {
		var div = $("<div></div>");
		id = div.html(data).find("#clicked").eq(0).text();
		if (typeof(id) == "string" && id.length > 0) UserClickedCalculation = true;
	}, "html");

	if (UserClickedCalculation) return true;
	else
	return false;
}

//	Разбор GET запроса

function getVarValueFromURL(url, varName) {
	var query = url.toString().substring(url.toString().indexOf('?') + 1);
	var vars = query.split("&");
	for (var i = 0; i < vars.length; i++) {
		var pair = vars[i].split("=");
		if (pair[0] == varName) return pair[1];
	}
	return null;
}

//   проверка на совпадение машин в кукисах

function checkCarCookieDublicate() {
	var oDate = new Date();
	oDate.setFullYear(oDate.getFullYear() + 5);
	var carArray = new Array();
	for (var i = 1; i < 6; i++)
	if (getCookie('car' + i) != '') carArray.push(getCookie('car' + i));
	for (var k = 0; k < carArray.length; k++) {
		carArray[k] = decodeURI(carArray[k]).split(',');
		if (carArray[k][1] == manufacturerName && carArray[k][2] == carName) {
			document.cookie = "car" + (k + 1) + "=" + (clientURL) + ',' + encodeURI(carArray[k][1]) + ',' + encodeURI(carArray[k][2]) + ',' + encodeURI(price) + ',' + "; expires=" + oDate.toGMTString();
			return k;
		}
	}
	return -1;
}

//   Обновление кукисов машины

function setCarCookies() {
	var oDate = new Date();
	oDate.setFullYear(oDate.getFullYear() + 5);
	var cookie = '' + document.cookie;
	var carArray = new Array();
	var cookieValue = clientURL + ',' + encodeURI(manufacturerName) + ',' + encodeURI(carName) + ',' + price;
	for (var i = 1; i < 6; i++)
	if (getCookie('car' + i) != '') carArray.push((getCookie('car' + i)));
	if (carArray.length == 5) carArray.pop();
	carArray.unshift(cookieValue);
	for (var k = 1; k <= carArray.length; k++)
	document.cookie = "car" + k + "=" + carArray[k - 1] + "; expires=" + oDate.toGMTString();
}

//   Проверка, нужно ли в вертикальном меню свернуть список
var toBlur = true;
var listToBlur;

//	определяем текущую ширину страницы

function windowWidth() {
	<!--
	//--><![CDATA[//><!--
	var x, y;
	// общий синтаксис
	if (self.innerHeight) {
		x = self.innerWidth;
		// IE 6 Strict Mode
	} else if (document.documentElement && document.documentElement.clientHeight) {
		x = document.documentElement.clientWidth;
		// Остальные версии IE
	} else if (document.body) {
		x = document.body.clientWidth;
	}
	return x;
	//--><!]]> 
}

//	Ссылка для обратного копирования

function getUrl() {
	alert($('#getParams').text());
}


//   Далее следует код, запрещающий выделение объектов на странице

function preventSelection(element) {
	var preventSelection = false;

	function addHandler(element, event, handler) {
		if (element.attachEvent) element.attachEvent('on' + event, handler);
		else if (element.addEventListener) element.addEventListener(event, handler, false);
	}

	function removeSelection() {
		if (window.getSelection) window.getSelection().removeAllRanges();
		else if (document.selection && document.selection.clear) document.selection.clear();
	}

	function killCtrlA(event) {
		var event = event || window.event;
		var sender = event.target || event.srcElement;
		if (sender.tagName.match(/INPUT|TEXTAREA/i)) return;
		var key = event.keyCode || event.which;
		if (event.ctrlKey && key == 'A'.charCodeAt(0)) {
			removeSelection();
			if (event.preventDefault) event.preventDefault();
			else
			event.returnValue = false;
		}
	}
	// не даем выделять текст мышкой
	addHandler(element, 'mousemove', function () {
		if (preventSelection) removeSelection();
	});
	addHandler(element, 'mousedown', function (event) {
		var event = event || window.event;
		var sender = event.target || event.srcElement;
		preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
	});
	// борем dblclick
	// если вешать функцию не на событие dblclick, можно избежать
	// временное выделение текста в некоторых браузерах
	addHandler(element, 'mouseup', function () {
		if (preventSelection) removeSelection();
		preventSelection = false;
	});
	// борем ctrl+A
	addHandler(element, 'keydown', killCtrlA);
	addHandler(element, 'keyup', killCtrlA);
}

//  Получаем кукис по его имени

function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(encodeURI(c_name) + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1) c_end = document.cookie.length;
			return document.cookie.substring(c_start, c_end);
		}
	}
	return "";
}

//	Обработка нажатий клавиш Up Down Enter Escape

function processKeypress(event) {
	var keyCode = event.keyCode;
	if ((keyCode == 40 || keyCode == 38 || keyCode == 13 || keyCode == 27) && resultLists.filter(function () {
		return $(this).css('display') != 'none'
	}).length > 0) {
		var currList = resultLists.filter(function () {
			return $(this).css('display') != 'none'
		});
		var liTMP = $('li', $(currList)).filter(function () {
			return $(this).attr('class').indexOf('active') >= 0
		});
		switch (keyCode) {

		case 40:
			if (liTMP.length == 0) {
				activeLi.attr('class', activeLi.attr('class').replace("active", ""));
				liTMP = currList.find('li').eq(0);
				liTMP.attr('class', liTMP.attr('class') + 'active');
				activeLi = liTMP;
				liTMP.each(function () {
					this.scrollIntoView(false)
				});
			} else {
				if (liTMP.next().length > 0) {
					activeLi.attr('class', activeLi.attr('class').replace("active", ""));
					liTMP = liTMP.next();
					activeLi = liTMP;
					liTMP.attr('class', liTMP.attr('class') + 'active');
					var liTMP_ = liTMP.next().next().next().next().next().next().next().next().next();
					if (liTMP_.length > 0) liTMP_.each(function () {
						this.scrollIntoView(false)
					});
				}
			}
			break;

		case 38:
			if (liTMP.length == 0) {
				activeLi.attr('class', activeLi.attr('class').replace("active", ""));
				liTMP = currList.find('li').eq(0);
				liTMP.attr('class', liTMP.attr('class') + 'active');
				activeLi = liTMP;
				liTMP.each(function () {
					this.scrollIntoView(false)
				});
			} else {
				if (liTMP.prev().length > 0) {
					activeLi.attr('class', activeLi.attr('class').replace("active", ""));
					liTMP = liTMP.prev();
					activeLi = liTMP;
					liTMP.attr('class', liTMP.attr('class') + 'active');
					var liTMP_ = liTMP.next().next().next().next().next().next().next().next().next();
					if (liTMP_.length > 0) liTMP_.each(function () {
						this.scrollIntoView(false)
					});
				}
			}
			break;

		case 13:
			if (liTMP.length > 0) {
				liTMP.mousedown();
			}
			break;

		case 27:
			resultLists.css('display', 'none');
			break;
		}
		if (event.preventDefault) event.preventDefault();
		event.returnValue = false;
	}
}

//	Выставление ссылок на предыдущие расчеты

function setPrevCalcs() {
	var carArray = new Array();
	var aHref = '<br style="line-height:5px;">';
	for (var i = 1; i < 6; i++)
	if (getCookie('car' + i) != '') carArray.push((getCookie('car' + i)));
	for (var k = 0; k < carArray.length; k++) {
		carArray[k] = carArray[k].split(',');
		aHref += '<a onclick="window.onbeforeunload=null;" href="./?' + (carArray[k][0]) + '">' + decodeURI(carArray[k][1]) + ' ' + decodeURI(carArray[k][2]) + ' ' + addSpaces(carArray[k][3]) + ' руб.' + '</a><br><br style="line-height:8px;">';
	}
	$('#prevCalc').html(aHref);
	if (carArray.length == 0) {
		$('#prevCalcHeader').css('display', 'none');
		$('#prevCalc').css('display', 'none');
	} else {
		$('#prevCalcHeader').css('display', '');
		$('#prevCalc').css('display', '');
	}
}

function doClear(theText) {
	if (theText.value == theText.defaultValue) {
		theText.value = ""
	}
}

function doDefault(theText) {
	if (theText.value == "") {
		theText.value = theText.defaultValue
	}
}

//	Функция добавления строки с параметрами водителя

function addDriverRowHTML() {
	var res = '<div class="f-driver">' + '<div class="f-driver-c1">' + '<p>Водитель 1:</p>' + '<a class="active" onclick="return false;" title="Мужчина" href="#">Мужчина</a>' + '<a  onclick="return false;" title="Женщина" href="#" class="">Женщина</a>' + '</div>' + '<div class="f-driver-c2">' + '<label> Возраст, лет: <input type="text" class="input-47"></label>' + '<label> Стаж вождения, лет: <input type="text" class="input-47"></label>' + '<a type="deleteDriver" title="Удалить водителя" onclick="deleteDriver(this);return false;" href="#"><img class="delete" alt="X" src="img/ico-x.png"></a>' + '</div>' + '</div>';
	var row = $(res);

	if ((typeof driverList == 'undefined') || driverList.length == 0) driverList = $('#driverList').eq(0);
	lastDriver = driverList.find('.f-driver').last();
	if (typeof driversFooter == 'undefined') driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	if (lastDriver.length == 0) { //	Если водителей нет, то либо мультидрайв, либо страница только загрузилась
		driversFooter.before(row);
		if (multiDrive) {
			driversFooter.find('div:first').after('<span><img alt="" src="img/ico-cancel.png"> <a title="" href="#" onmousedown="setMultiDrive();return false;">Не указывать водителей, выбрать мультидрайв</a></span>').remove();
			multiDrive = false;
		}
	} else //	Иначе добавляем в конец списка водителей
	lastDriver.after(row);
	var drivers = driverList.find('.f-driver');
	for (var i = 1; i <= drivers.length; i++)
	drivers.eq(i - 1).find('p:first').text('Водитель ' + i + ':');
	initDriverInputs();
	initDriverSex();
}

//	Функция удаления водителя

function deleteDriver(obj) {
	$(obj).parent().parent().remove();
	if (typeof driverList == 'undefined' || driverList.length == 0) driverList = $('#driverList').eq(0);
	var drivers = driverList.find('.f-driver');
	var countDrivers = drivers.length;
	for (var i = 1; i <= drivers.length; i++)
	drivers.eq(i - 1).find('p:first').text('Водитель ' + i + ':');
	if (typeof driversFooter == 'undefined') driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	if (!multiDriveFromButton && countDrivers == 0) //	Если удалили всех водителей (Мультидрайв)
	setMultiDrive();
}

function setMultiDrive() {
	multiDriveFromButton = true;
	var drivers = driverList.find('.f-driver');
	for (var i = 0; i < drivers.length; i++)
	drivers.eq(i).find('a').filter('[type=deleteDriver]').click();
	multiDriveFromButton = false;
	if (typeof driversFooter == 'undefined') driversFooter = $('.f1-p1').filter('[type=driversFooter]').eq(0);
	multiDriveTextHTML = '<div style="float:left;width:470px;text-align:left;font-family:times New Roman;font-size:12px;">Вы выбрали опцию <span style="color:#ff7200;padding:0px;"><b>«Мультидрайв»</b></span>.' + 'При наступлении страхового случая ущерб<br>будет возмещен страховой компанией вне зависимости от того, кто находился за рулем.</div>';
	driversFooter.find('span:first').before(multiDriveTextHTML).remove();
	multiDrive = true;
}

// Инициализировать выбор пола водителей

function initDriverSex() {
	$(".f-driver-c1 a").mousedown(function () {
		if (!$(this).hasClass("active")) {
			$(this).parent().find("a").removeClass("active");
			$(this).addClass("active");
		}
		return false;
	});
}

//	Инициализировать проверку содержимого input возрвста/стажа водителей

function initDriverInputs() {
	var inputs = $('.input-47');
	inputs.bind('change mouseup keypress keyup keydown', checkDriverAgeOrExp);
}

//	Проверить содержимое input возраста/стажа водителя

function checkDriverAgeOrExp() {
	var value = $(this).val();
	if (isNaN(parseInt(value))) {
		$(this).val('');
		return;
	}
	if (value > 99) $(this).val(99);
}

//	Вешаем обработчиики событий кликов по сигнализации

function initAlarmInputs() {

	//	Обработка кликов по ПС техноблок
	$("#advTecnoblock").add($("label").filter(function () {
		return $(this).attr('for') == "advTecnoblock"
	})).mousedown(function (event) {
		$("#advTecnoblock").attr('checked', 'checked');
		hideAdvImmAlarm();
		$("#advTecnAdv").css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Обработка кликов по ПС GreatGuard
	$("#advGreatGuard").add($("label").filter(function () {
		return $(this).attr('for') == "advGreatGuard"
	})).mousedown(function (event) {
		hideAdvImmAlarm();
		$('#advGreatGuardAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Обработка кликов по ПС MED
	$("#advMED").add($("label").filter(function () {
		return $(this).attr('for') == "advMED"
	})).mousedown(function (event) {
		$("#advMED").attr('checked', 'checked');
		hideAdvImmAlarm();
		$('#advMEDAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Спринг
	$("#advSpring").add($("label").filter(function () {
		return $(this).attr('for') == "advSpring"
	})).mousedown(function (event) {
		$("#advSpring").attr('checked', 'checked');
		hideAdvImmAlarm();
		$('#advSpringAdv').css("display", "");

		toResults = false;
		calculateCasko(this);
	});

	$("#advImmobilizerOther").add($("label").filter(function () {
		return $(this).attr('for') == "advImmobilizerOther"
	})).mousedown(function (event) {
		$("#advImmobilizerOther").attr('checked', 'checked');
		hideAdvImmAlarm();
		toResults = false;
		calculateCasko(this);

	});

	//	Обработка кликов по ПС BlackBug
	$("#advBlackBugSuper").add($("label").filter(function () {
		return $(this).attr('for') == "advBlackBugSuper"
	})).mousedown(function (event) {
		$("#advBlackBugSuper").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advBlackBugAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Обработка кликов по ПС ComplexDF
	$("#advComplexDF").add($("label").filter(function () {
		return $(this).attr('for') == "advComplexDF"
	})).mousedown(function (event) {
		$("#advComplexDF").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advComplexDFAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Обработка кликов по SkyBrake
	$("#advSkybrake").add($("label").filter(function () {
		return $(this).attr('for') == "advSkybrake"
	})).mousedown(function (event) {
		$("#advSkybrake").attr('checked', 'checked');
		hideTransponderAlarm();
		$('#advSkybrakeAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	$("#advTransponderOther").add($("label").filter(function () {
		return $(this).attr('for') == "advTransponderOther"
	})).mousedown(function (event) {
		$("#advTransponderOther").attr('checked', 'checked');
		hideTransponderAlarm();
		toResults = false;
		calculateCasko(this);
	});

	//	Спутниковые ПС
	//	Starcom
	$("#advStarcom").add($("label").filter(function () {
		return $(this).attr('for') == "advStarcom"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advStarcom").attr('checked', 'checked');
		$('#advStarcomAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Цезарь-Саттелит
	$("#advCezar").add($("label").filter(function () {
		return $(this).attr('for') == "advCezar"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advCezar").attr('checked', 'checked');
		$('#advCezarAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});
	//	Эшелон
	$("#advEchelon").add($("label").filter(function () {
		return $(this).attr('for') == "advEchelon"
	})).mousedown(function (event) {
		hideSatelliteAlarm();
		$("#advEchelon").attr('checked', 'checked');
		$('#advEchelonAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Arkan
	$("#advArkan").add($("label").filter(function () {
		return $(this).attr('for') == "advArkan"
	})).mousedown(function (event) {
		$("#advArkan").attr('checked', 'checked');
		hideSatelliteAlarm();
		$('#advArkanAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Барьер
	$("#advBarrier").add($("label").filter(function () {
		return $(this).attr('for') == "advBarrier"
	})).mousedown(function (event) {
		$("#advBarrier").attr('checked', 'checked');
		hideSatelliteAlarm();
		$('#advBarrierAdv').css("display", "");
		toResults = false;
		calculateCasko(this);
	});

	//	Спутниковые "Другое"
	$("#advSattelliteOther").add($("label").filter(function () {
		return $(this).attr('for') == "advSattelliteOther"
	})).mousedown(function (event) {
		$("#advSattelliteOther").attr('checked', 'checked');
		hideSatelliteAlarm();
		toResults = false;
		calculateCasko(this);
	});
};

function hideSatelliteAlarm() {
	$('#advArkanAdv').css("display", "none");
	$('#advCezarAdv').css("display", "none");
	$('#advStarcomAdv').css("display", "none");
	$('#advEchelonAdv').css("display", "none");
	$('#advBarrierAdv').css("display", "none");
	$('#alarmRecalculate').css('display', 'none');
}

function hideTransponderAlarm() {
	$('#advSkybrakeAdv').css("display", "none");
	$('#advBlackBugAdv').css("display", "none");
	$('#advComplexDFAdv').css("display", "none");
	$('#advSpringAdv').css("display", "none");
}

function hideAdvImmAlarm() {
	$("#advTecnAdv").css("display", "none");
	$('#advGreatGuardAdv').css("display", "none");
	$('#advMEDAdv').css("display", "none");
	$('#advSpringAdv').css("display", "none");
	$('#alarmRecalculate').css('display', 'none');
}

function hideCalculationResult() { //	Спрятать таблицу с результатами расчета
	$('#f-b-car-bg').css('display', 'block');
	$('#f-2').css('display', 'none')
	$('#f1-town').find('input').filter('[type=submit]').attr('id', 'f1-submit-big');
}

function showCalculationResult() { //	Показать таблицу с результатами расчета
	$('#f-b-car-bg').css('display', 'block');
	$('#f-2').css('display', '')
	$('#f1-town').find('input').filter('[type=submit]').attr('id', 'f1-submit-small');
}

//	Получить значения скидок для клиента

function setDscnt() {
	kaskoDiscount = parseInt($("#kaskoDiscount").text());
	if (!(kaskoDiscount >= 0)) kaskoDiscount = 2;
	osagoDiscount = 0;
	pe = $("#pe").text();
}

function utf8_encode(str_data) { // Encodes an ISO-8859-1 string to UTF-8
	//
	// +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
	return str_data;
	str_data = str_data.replace(/\r\n/g, "\n");
	var utftext = "";

	for (var n = 0; n < str_data.length; n++) {
		var c = str_data.charCodeAt(n);
		if (c < 128) {
			utftext += String.fromCharCode(c);
		} else if ((c > 127) && (c < 2048)) {
			utftext += String.fromCharCode((c >> 6) | 192);
			utftext += String.fromCharCode((c & 63) | 128);
		} else {
			utftext += String.fromCharCode((c >> 12) | 224);
			utftext += String.fromCharCode(((c >> 6) & 63) | 128);
			utftext += String.fromCharCode((c & 63) | 128);
		}
	}

	return utftext;
}

function updateCarPrice(mark, model, age) {
	$.post("getPrice.php", {
		m: mark,
		ml: model,
		a: age
	}, function (data) {
		if (parseInt(data) > 10000) $('#price').val(addSpaces(data))
	});
}

$(document).ready( ////	Собственно, инициализация страницы после загрузки всех файлов	
	function () {
		//if($('#refId').text()!='neonet')
		//window.onbeforeunload=function(event){return "\n\nВы уверены, что хотите покинуть страницу?\n\n\n\n\nНе упустите свой шанс значительно сэкономить, сравнив цены!\n\n\n\n";}
		setPrevCalcs() //	Предыдущих предыдущих расчетов
		addDriverRowHTML(); //	добавляем 1 водителя
		
		$('#price').bind('keypress keydown keyup', function () {
			$('#price').val(addSpaces($('#price').val()))
		}) //	Форматирование  вводимого текста в поле стоимости машины
	
		preventSelection(document); //	Запрещаем выделение текста на сайте
		setDscnt(); //	Получаем с сервера значение скидки для скиента		
		
		//	$(document).bind('keyup',{combi:'Ctrl+u', disableInInput: false}, getUrl);	//	Инициализируем генерацию новых параметров расчета для брокера
		newCar = $('#newCar').eq(0); //	Получаем ссылку на checkbox "Новая машина"
	
		guarantee = $('#guarantee').eq(0); //	Получаем ссылку на checkbox "Машина на гарантии"
	
		tooltip.init(); //	Инициализируем всплывающие подсказки
	
		if ($('#pe').text() == 'true') 
			pe = true;
		else 
			pe = false; //	Если есть реферер, запоминаем имя предоставляющего VIP скидку
			
		if ($('#pi').text().length > 0) 
			pi = $('#pi').text();
	
		initAlarmInputs(); //	Инициализируем сигналки
		$('#price').change(function () {
			priceChanged = true;
		}); //	при изменении стоимости выставляется флаг перерисовки линейки франшизы
		$('#tester2').change(function () {
			sliderSpaces();
		});
		sliderSpaces(); //	форматируем содержимое поля ввода франщизы
		checkClientId(); //	Ставим cookies для 
		$(document).keydown(function (event) {
			processKeypress(event);
		}); //	Обработка клавиатуры для управления выпадающих списков для выбора машины/возраста/двигателя
	
		//  (?Deprecated?) Добавляем пересчет КАСКО при изменении значения бонус-малус
		$('#countCrashes').change(function () {
			toScroll = false;
			$('#Span1').eq(0).css('display', 'none');
			calculateCasko(this);
		});
	
		//	Инициализация выбора года страхования осаго
		//	$("#f-osago-price2 .year a").click(function(){if(!$(this).hasClass("active")){$("#f-osago-price2 .year a").removeClass("active");$(this).addClass("active");}return false;});
		//	Инициализация выбора кол-ва аварий по ОСАГО
		//	$("#f-osago-price2 .avarii p a").click(function(){if(!$(this).hasClass("active")){$(this).parent().find("a").removeClass("active");$(this).addClass("active");}return false;});
	
		resultLists    = $('.result_list'); //	Инициализация внутренних пременных для управления	выпадающими списками
		select         = $('#manufacturer-select');
		selectCar      = $('#car-select');
		selectCarAge   = $('#car-age-select');
		selectCarPower = $('#car-power');
		carPrice       = $('#price');
		
		//	обработчик событий: если произошел клик вне выпадающего списка, закрыть выдадающий список
		$('body').mousedown(function (evTarget) {
			if ($(evTarget.target).attr('class') != 'result_list  result_list_scrollable' && 
				$(evTarget.target).attr('class') != 'selected_items' && 
				$(evTarget.target).attr('name') != 'list' && 
				$(evTarget.target).parent().attr('name') != 'list') 
			{
				resultLists.css('display', 'none');
			} 
			else if ($(evTarget.target).attr('class') == 'selected_items' && 
					 $(evTarget.target).parent().parent().parent().parent().parent().filter(
			function () {
				return $(this).attr("class") == 'result_list  result_list_scrollable'
			}).eq(0).css('display' != 'none')) 
			{
			}
		});
	
		$.ajax({
			url: "cars.xml" + '?' + (rand % 1000),
			success: function (response) {
				xml = carsXML = $(response);
				if ($('#newForm').length == 1) newForm.loadCars(true);
				//	newForm.loadCars(false);
				//	Загружаем список марок машин
				select.empty();
	
				xml.find('m').each(function () {
					var manufacturer = $(this),
						name = manufacturer.children('n').text();
					var optionTMP = $('<li/>');
					optionTMP.attr('name', 'list');
					if (manufacturer.attr("favorite") == "favorite") name = '<span class="favoriteManufacturer">' + name + '</span>';
					if (manufacturer.attr("favorite") == "popular") name = '<span class="popularManufacturer">' + name + '</span>';
					optionTMP.html(name).appendTo(select);
				});
	
				//	выделение синим фоном элемента списка при наведении мышкой
				activeLi = $("li").eq(0);
				$('ul', resultLists).mouseover(function (evTarget) {
					var Target = $(evTarget.target);
					if (Target.attr('name') != 'list') Target = Target.parent();
					if (Target.attr('name') == 'list') if (activeLi != Target) {
						activeLi.attr('class', activeLi.attr('class').replace("active", ""));
						activeLi = Target;
						activeLi.attr('class', activeLi.attr('class') + 'active');
					}
				});
				$('.selected_items').mousedown(function () {
					resultLists.css('display', 'none');
					if ($(this).parent().parent().parent().parent().parent().find('.results_container').children().eq(0).css('display') == 'none') {
						$(this).parent().parent().parent().parent().parent().find('.results_container').children().eq(0).css('display', '');
					} else {
						$(this).parent().parent().parent().parent().parent().find('.results_container').children().eq(0).css('display', 'none');
					}
				});
				$('.selector').mousedown(function (target) {
					if ($(target.target).attr('class') != 'selected_items') $(this).find('.selected_items').mousedown();
					return false;
				})
				$('.selected_items').focus(function () {
					resultLists.css('display', 'none');
					$(this).parent().parent().parent().parent().parent().find('.result_list').css('display', '');
	
				});
				$('ul', resultLists).mousedown(function (evTarget) {
					log(this);
					log(evTarget.target);
					resultLists.css('display', 'none');
					switch ($(this).attr('id')) {
						case 'manufacturer-select':
							//	Скрываем 2-ю часть калькулятора, пока не произведен первоначальный расчет
							hideCalculationResult();
		
							manufacturerName = $('.active', select).text();
							$('#manInput').text($(evTarget.target).text());
							$('#carInput').css('color', 'black');
							$('#carAgeInput').css('color', '#A0A0A0');
							$('#powerInput').css('color', '#A0A0A0');
							//	Загружаем список машин
		
							var cars = xml.find('m>n').filter(function () {
								return $(this).text() == $(evTarget.target).text()
							}).parent().find('cs>c>n');
							if (cars.length < 18) $('#car-select').parent().css('height', cars.length * 19 + 1 + 'px')
							else
							$('#car-select').parent().css('height', '323px');
							$('#car-select').html('');
							$('#carInput').text('Модель');
							cars.each(function () {
								$('<li></li>').text($(this).text()).attr('name', 'list').appendTo(selectCar);
							});
							resultLists.css('display', 'none');
							$('#oferta').css("display", "none");
						break;
						case 'car-select':
							$('#carInput').text($(evTarget.target).text());
							carName = $(evTarget.target).text();
							resultLists.css('display', 'none');
							$('#carAgeInput').css('color', 'black');
							if (typeof carAge != 'undefined' && carAge != null && carAge != '' && !forbiddenCalculation) updateCarPrice(manufacturerName.toUpperCase(), carName.toUpperCase(), carAge.replace('carAge', ''));
						break;
						case 'car-age-select':
							carAge = $(evTarget.target).text();
							$('#carAgeInput').text($(evTarget.target).text());
							resultLists.css('display', 'none');
							carAge = $(evTarget.target).attr("id");
							$('#carAgeInput').css('color', 'black');
							if (carAge == "carAge0") {
								$('#Tr2').next().find('td').eq(0).css('display', '');
								$('#guarantee').eq(0).attr('checked', 'checked');
							} else {
								$('#Tr2').next().find('td').eq(0).css('display', 'none');
								$('#newCar').eq(0).attr('checked', '');
								if (carAge == "carAge1" || carAge == "carAge2" || carAge == "carAge3" || carAge == "carAge4") $('#guarantee').eq(0).attr('checked', 'checked');
							}
							resultLists.css('display', 'none');
							$('#powerInput').css('color', 'black');
							if (typeof carAge != 'undefined' && carAge != null && carAge != '' && !forbiddenCalculation) updateCarPrice(manufacturerName, carName, carAge.replace('carAge', ''));
						break;
						case 'car-power':
							$('#powerInput').css('color', 'black');
							carPower = $(evTarget.target).attr('id');
							$('#powerInput').text($(evTarget.target).text());
							resultLists.css('display', 'none');
							$('#pic-t-car').css('float', 'left');
							$('#price-Tip').css('float', 'left').css('display', '');
							$('#VIPFirstNote').css('top', '55px');
						break;
					}
				});
				$('#manInputWrapper').mousedown(function () {
					cChange.changed = true;
				});
				$('#carInputWrapper').mousedown(function () {
					cChange.changed = true;
				});
				$('#carAgeInputWrapper').mousedown(function () {
					cChange.changed = true;
				});
	
				//  вешаем обработчики событий на первую часть меню расчета КАСКО
				//   по ходу подгружаем оставшиеся файлы
				jsCount = 1;
				//	$.getScript('js/calc.js?'+rand,function(){onJSLoad()});
				//	$.getScript('js/osago.js?'+rand,function(){onJSLoad()});
				$.getScript('js/jquery.scrollTo-min.js?' + rand, function () {
					onJSLoad()
				});
				//	$.getScript('js/guta.js?'+rand,function(){onJSLoad()});
				//	$.getScript('js/osk.js?'+rand,function(){onJSLoad()});
	
				var manLoaded = $('#manufacturer-select').parent().parent().parent().find('input');
				if (manLoaded.attr('value') == 'Загрузка машин...') manLoaded.attr('value', 'Марка');
			}
		});
	}
);

function initKaskoCrashes() {}
// variables
// version of library
LCB_version = 2.8;
// _mac : true = macintosh, false = other os
_mac = navigator.userAgent.indexOf('Mac') != -1;
// _ie512 : true = MSIE 5.12(mac), false = others
_ie512 = navigator.userAgent.indexOf('MSIE 5.12') != -1;
// _dom : kind of DOM.
//        IE4 = 1, IE5+ = 2, NN4 = 3, NN6+ = 4, others = 0
_dom = document.all ? (document.getElementById ? 2 : 1) : (document.getElementById ? 4 : (document.layers ? 3 : 0));
_createLayerNo = 0; // layer no.

function initCrossBrowserLib() {
	_mac = navigator.userAgent.indexOf('Mac') != -1;
	_ie512 = navigator.userAgent.indexOf('MSIE 5.12') != -1;
	_dom = document.all ? (document.getElementById ? 2 : 1) : (document.getElementById ? 4 : (document.layers ? 3 : 0));
	_createLayerNo = 0;
}
initCrossBrowserLib();


/* _____________________________________________________________________ */

function getWindowWidth() {
	if (_dom == 4 || _dom == 3) return window.innerWidth;
	if (_dom == 2 || _dom == 1) return document.body.clientWidth;
	return 0;
}

function getWindowHeight() {
	if (_dom == 4 || _dom == 3) return window.innerHeight;
	if (_dom == 2 || _dom == 1) return document.body.clientHeight;
	return 0;
}

function getWinXOffset() {
	if (_dom == 4) return window.scrollX;
	if (_dom == 2 || _dom == 1) return document.body.scrollLeft;
	if (_dom == 3) return window.pageXOffset;
	return 0;
}

function getWinYOffset() {
	if (_dom == 4) return window.scrollY;
	if (_dom == 2 || _dom == 1) return document.body.scrollTop;
	if (_dom == 3) return window.pageYOffset;
	return 0;
}

function getDivFromName(nm) {
	if (_dom == 4 || _dom == 2) return document.getElementById(nm);
	if (_dom == 1) return document.all(nm);
	if (_dom == 3) {
		var s = '';
		for (var i = 1; i < arguments.length; i++) s += 'document.layers.' + arguments[i] + '.';
		return eval(s + 'document.layers.' + nm);
	}
	return null;
}

function getDivName(div) {
	if (_dom == 4 || _dom == 2 || _dom == 1) return div.id;
	if (_dom == 3) return div.name;
	return '';
}

function createLayer(left, top, width, height, parentDiv) {
	var s = '';
	if (arguments.length > 5) {
		for (var i = 5; i < arguments.length; i++) s += arguments[i];
	}
	if (_dom == 4) {
		var divName = '_js_layer_' + _createLayerNo;
		_createLayerNo++;
		var pDiv = parentDiv ? parentDiv : document.body;
		var div = document.createElement('DIV');
		div.id = divName;
		div.setAttribute('style', 'position:absolute;left:' + left + ';top:' + top + (width > 0 ? (';width:' + width) : '') + (height > 0 ? (';height:' + height) : '') + ';visibility:hidden');
		var range = document.createRange();
		range.selectNodeContents(div);
		range.collapse(true);
		var cf = range.createContextualFragment(s);
		div.appendChild(cf);
		pDiv.appendChild(div);
		return div;
	}
	if (_dom == 2 || _dom == 1) {
		var adj = (_mac && !_ie512) ? ' ' : '';
		var divName = '_js_layer_' + _createLayerNo;
		_createLayerNo++;
		var ha = (height > 0) ? (';height:' + height) : '';
		var pDiv = parentDiv ? parentDiv : document.body;
		pDiv.insertAdjacentHTML('BeforeEnd', '<div id="' + divName + '" style="position:absolute;left:' + left + ';top:' + top + (width > 0 ? (';width:' + width) : ';width:1') + (height > 0 ? (';height:' + height) : '') + ';visibility:hidden;">' + s + '<\/div>' + adj);
		return document.all(divName);
	}
	if (_dom == 3) {
		var div = parentDiv ? (new Layer(width, parentDiv)) : (new Layer(width));
		if (height > 0) div.resizeTo(width, height);
		div.moveTo(left, top);
		if (s != '') {
			div.document.open('text/html', 'replace');
			div.document.write(s);
			div.document.close();
		}
		return div;
	}
	return null;
}

function createExLayer(url, left, top, width, height, parentDiv) {
	if (_dom == 4) {
		var divName = '_js_layer_' + _createLayerNo;
		_createLayerNo++;
		var pDiv = parentDiv ? parentDiv : document.body;
		var div = document.createElement('IFRAME');
		div.id = divName;
		div.name = divName;
		div.setAttribute('style', 'position:absolute;left:' + left + ';top:' + top + ';width:' + width + (height > 0 ? (';height:' + height) : '') + ';visibility:hidden');
		div.setAttribute('src', url);
		div.setAttribute('frameborder', 0);
		div.setAttribute('scrolling', 'no');
		pDiv.appendChild(div);
		return div;
	}
	if (_dom == 2 || _dom == 1) {
		var adj = (_mac && _ie512) ? ' ' : '';
		var bd, divName = '_js_layer_' + _createLayerNo;
		_createLayerNo++;
		var ha = (height > 0) ? (';height:' + height) : '';
		if (arguments.length > 5 && parentDiv) bd = parentDiv;
		else bd = document.body;
		bd.insertAdjacentHTML('BeforeEnd', '<div id="' + divName + '" style="position:absolute;left:' + left + ';top:' + top + ';width:' + width + ha + ';visibility:hidden;">' + '<iframe src="' + url + '" name="' + divName + '_if" ' + 'width=' + width + ' height=' + height + 'marginwidth=0 marginheight=0 ' + 'scrolling="no" frameborder="no">' + '<\/iframe>' + '<\/div>' + adj);
		return document.all(divName);
	}
	if (_dom == 3) {
		var div = parentDiv ? (new Layer(width, parentDiv)) : (new Layer(width));
		if (height > 0) div.resizeTo(width, height);
		div.moveTo(left, top);
		div.load(url, width);
		return div;
	}
	return null;
}

function getDivImage(div, imgName) {
	if (_dom == 4) return document.images[imgName];
	if (_dom == 2 || _dom == 1) return document.images(imgName);
	if (_dom == 3) return div.document.images[imgName];
	return null;
}

function getDivForm(div, frmName) {
	if (_dom == 4) return document.forms[frmName];
	if (_dom == 2 || _dom == 1) return document.forms(frmName);
	if (_dom == 3) return div.document.forms[frmName];
	return null;
}

function initDivPos(div) {
	if (_dom == 4) {
		div.style.left = div.offsetLeft + 'px';
		div.style.top = div.offsetTop + 'px';
	} else if (_dom == 2 || _dom == 1) {
		div.style.pixelLeft = div.offsetLeft;
		div.style.pixelTop = div.offsetTop;
	}
	return div;
}

function getDivLeft(div) {
	if (_dom == 4 || _dom == 2) return div.offsetLeft;
	if (_dom == 1) return div.style.pixelLeft;
	if (_dom == 3) return div.left;
	return 0;
}

function getDivTop(div) {
	if (_dom == 4 || _dom == 2) return div.offsetTop;
	if (_dom == 1) return div.style.pixelTop;
	if (_dom == 3) return div.top;
	return 0;
}

function moveDivTo(div, left, top) {
	if (_dom == 4) {
		div.style.left = left + 'px';
		div.style.top = top + 'px';
		return;
	}
	if (_dom == 2 || _dom == 1) {
		div.style.pixelLeft = left;
		div.style.pixelTop = top;
		return;
	}
	if (_dom == 3) {
		div.moveTo(left, top);
		return;
	}
}

function moveDivBy(div, left, top) {
	if (_dom == 4) {
		div.style.left = div.offsetLeft + left;
		div.style.top = div.offsetTop + top;
		return;
	}
	if (_dom == 2) {
		div.style.pixelLeft = div.offsetLeft + left;
		div.style.pixelTop = div.offsetTop + top;
		return;
	}
	if (_dom == 1) {
		div.style.pixelLeft += left;
		div.style.pixelTop += top;
		return;
	}
	if (_dom == 3) {
		div.moveBy(left, top);
		return;
	}
}

function scrollExlHItTo(exdiv, x) {
	if (_dom == 4) {
		frames[exdiv.id].scrollTo(x, frames[exdiv.id].scrollY);
		return;
	}
	if (_dom == 2 || _dom == 1) {
		frames(exdiv.id + '_if').scrollTo(x, frames(exdiv.id + '_if').document.body.scrollTop);
		return;
	}
	if (_dom == 3) {
		var dx = x - exdiv.clip.left,
			ch = exdiv.clip.width;
		exdiv.left -= dx;
		exdiv.clip.left = x;
		exdiv.clip.width = ch;
		return;
	}
	return;
}

function scrollExlVItTo(exdiv, y) {
	if (_dom == 4) {
		frames[exdiv.id].scrollTo(frames[exdiv.id].scrollX, y);
		return;
	}
	if (_dom == 2 || _dom == 1) {
		frames(exdiv.id + '_if').scrollTo(frames(exdiv.id + '_if').document.body.scrollLeft, y);
		return;
	}
	if (_dom == 3) {
		var dy = y - exdiv.clip.top,
			ch = exdiv.clip.height;
		exdiv.top -= dy;
		exdiv.clip.top = y;
		exdiv.clip.height = ch;
		return;
	}
	return;
}

function initDivSize(div) {
	if (_dom == 4) {
		// getComputedStyle is buggy in NN6, and wrong in Mozilla 0.8/9
		//
		// var style=document.defaultView.getComputedStyle(div,null);
		// div.style.width =style.getPropertyValue('width' );
		// div.style.height=style.getPropertyValue('height');
		//
		div.style.width = div.offsetWidth + 'px';
		div.style.height = div.offsetHeight + 'px';
		//
		// need border-width=0px, margin-width:0px
	} else if (_dom == 2 || _dom == 1) {
		div.style.pixelWidth = div.offsetWidth;
		div.style.pixelHeight = div.offsetHeight;
	}
	return div;
}

function getDivWidth(div) {
	if (_dom == 4 || _dom == 2) return div.offsetWidth;
	if (_dom == 1) return div.style.pixelWidth;
	if (_dom == 3) return div.clip.width;
	return 0;
}

function getDivHeight(div) {
	if (_dom == 4 || _dom == 2) return div.offsetHeight;
	if (_dom == 1) return div.style.pixelHeight;
	if (_dom == 3) return div.clip.height;
	return 0;
}

function resizeDivTo(div, width, height) {
	if (_dom == 4) {
		div.style.width = width + 'px';
		div.style.height = height + 'px';
		return;
	}
	if (_dom == 2 || _dom == 1) {
		div.style.pixelWidth = width;
		div.style.pixelHeight = height;
		return;
	}
	if (_dom == 3) {
		div.resizeTo(width, height);
		return;
	}
}

function resizeDivBy(div, width, height) {
	if (_dom == 4) {
		div.style.width = (div.offsetWidth + width) + 'px';
		div.style.height = (div.offsetHeight + height) + 'px';
		return;
	}
	if (_dom == 2) {
		div.style.pixelWidth = div.offsetWidth + width;
		div.style.pixelHeight = div.offsetHeight + height;
		return;
	}
	if (_dom == 1) {
		div.style.pixelWidth += width;
		div.style.pixelHeight += height;
		return;
	}
	if (_dom == 3) {
		div.resizeBy(width, height);
		return;
	}
}

function getExlWidth(exdiv) {
	if (_dom == 4)
	// NN6 is buggy( same exdiv.offsetWidth )
	return exdiv.contentDocument.body.offsetWidth;
	if (_dom == 2 || _dom == 1) return _mac ? frames(exdiv.id + '_if').document.body.offsetWidth : frames(exdiv.id + '_if').document.body.scrollWidth;
	if (_dom == 3) return exdiv.document.width;
	return 0;
}

function getExlHeight(exdiv) {
	if (_dom == 4) return exdiv.contentDocument.body.offsetHeight;
	if (_dom == 2 || _dom == 1) return _mac ? frames(exdiv.id + '_if').document.body.offsetHeight : frames(exdiv.id + '_if').document.body.scrollHeight;
	if (_dom == 3) return exdiv.document.height;
	return 0;
}

function setDivVisibility(div, visible) {
	if (_dom == 4 || _dom == 2 || _dom == 1) {
		div.style.visibility = (visible) ? 'inherit' : 'hidden';
		return;
	}
	if (_dom == 3) {
		div.visibility = (visible) ? 'inherit' : 'hide';
		return;
	}
}

function setDivVisibilities(divs, visible) {
	if (_dom == 4 || _dom == 2 || _dom == 1) {
		for (var i = 0; i < divs.length; i++)
		divs[i].style.visibility = (visible) ? 'inherit' : 'hidden';
	}
	if (_dom == 3) {
		for (var i = 0; i < divs.length; i++)
		divs[i].visibility = (visible) ? 'inherit' : 'hide';
	}
	return divs;
}

function setDivClip(div, top, right, bottom, left) {
	if (_dom == 4 || _dom == 2 || _dom == 1) {
		div.style.clip = 'rect(' + top + 'px ' + right + 'px ' + bottom + 'px ' + left + 'px)';
		return;
	}
	if (_dom == 3) {
		div.clip.top = top;
		div.clip.right = right;
		div.clip.bottom = bottom;
		div.clip.left = left;
		return;
	}
}

function writeDivHTML(div, op, cl) {
	var s = '';
	for (var i = 3; i < arguments.length; i++) s += arguments[i];
	if (_dom == 4) {
		if (op) {
			while (div.hasChildNodes()) div.removeChild(div.lastChild);
		}
		var range = document.createRange();
		range.selectNodeContents(div);
		range.collapse(true);
		var cf = range.createContextualFragment(s);
		div.appendChild(cf);
		return;
	}
	if (_dom == 2 || _dom == 1) {
		if (op) div.innerHTML = '';
		if (_mac && !_ie512) div.innerHTML += s;
		else div.insertAdjacentHTML('BeforeEnd', s);
		return;
	}
	if (_dom == 3) {
		if (op) div.document.open('text/html', 'replace');
		div.document.write(s);
		if (cl) div.document.close();
		return;
	}
}

function setDivBackgroundColor(div, color) {
	if (color == null) color = 'transparent';
	if (_dom == 3) div.bgColor = color;
	else div.style.backgroundColor = color;
}

function setDivBackgroundImage(div, url) {
	if (_dom == 3) div.background.src = url ? url : null;
	else div.style.backgroundImage = url ? ('url(' + url + ')') : 'none';
}

function setDivZIndex(div, order) {
	if (_dom == 4 || _dom == 2 || _dom == 1) {
		div.style.zIndex = order;
		return;
	}
	if (_dom == 3) {
		div.zIndex = order;
		return;
	}
}

function setDivStyleAttribute(div, nm, value) {
	if (_dom != 0 && _dom != 3) eval('div.style.' + nm + '=value');
	return div;
}

function changeExlURL(exdiv, url) {
	if (_dom == 4) {
		exdiv.setAttribute('src', url);
		return;
	}
	if (_dom == 2 || _dom == 1) {
		frames(exdiv.id + '_if').location.replace(url);
		return;
	}
	if (_dom == 3) {
		exdiv.load(url, exdiv.clip.width);
		return;
	}
	return;
}

function getLeftFromEvent(e) {
	if (_dom == 4) return e.clientX + window.scrollX;
	if (_dom == 2 || _dom == 1) return document.body.scrollLeft + window.event.clientX;
	if (_dom == 3) return e.pageX;
	return 0;
}

function getTopFromEvent(e) {
	if (_dom == 4) return e.clientY + window.scrollY;
	if (_dom == 2 || _dom == 1) return document.body.scrollTop + window.event.clientY;
	if (_dom == 3) return e.pageY;
	return 0;
}
/* ==============================================================
   << event handler service object >>
              for Netscape Navigator 4.0
              and Internet Explorer  4.0+
   Author : Shinichi Hagiwara
   Type   : library - free software
   history:
     09/17/2000 remake for my book
     06/24/2001 support Mozilla( NN6 )
   Require JS Lib
          : LibCrossBrowser.js  - Common functions for cross browser
   Copyright(C) 2000 ShinSoft. All rights reserved.
 ================================================================ */
_grabObj = null; // <0x90><0xe8><0x97>L<0x92><0x86><0x82><U+0303>I<0x83>u<0x83>W<0x83>F<0x83>N<0x83>g

// <0x83>C<0x83>x<0x83><0x93><0x83>g<0x90><0xa7><0x8c><0xe4><0x83>I<0x83>u<0x83>W<0x83>F<0x83>N<0x83>g

function EventCtrl(div) {
	this.div = div;
	this.type = '';
	this.mask = 0;
	this.pageX = 0;
	this.pageY = 0;
}

// <0x83>C<0x83>x<0x83><0x93><0x83>g<0x90><0xa7><0x8c><0xe4><0x83>I<0x83>u<0x83>W<0x83>F<0x83>N<0x83>g<0x82><U+030B><0xa4><0x97>p<0x89><0xbb><0x83><0x81><0x83>\<0x83>b<0x83>h
EventCtrl.prototype.linkCtrl = function (obj) {
	if (obj && !obj.eventCtrl) obj.eventCtrl = this;
	return this;
}
// <U+81D2>l<0x82><U+0310><U+0752><U+80C1><0x83>\<0x83>b<0x83>h
EventCtrl.prototype.setThreshold = function (threshold) {
	this.threshold = threshold;
	return this;
}

// <0x97>v<0x91>f<0x96><0xbc><0x82><0xa9><0x82><0xe7><0x90><0xe8><0x97>L<0x92><0x86><0x82><U+0303>C<0x83>x<0x83><0x93><0x83>g<0x90><0xa7><0x8c><0xe4><0x83>I<0x83>u<0x83>W<0x83>F<0x83>N<0x83>g<0x82><U+13F82><0xe9> IE<0x97>p<0x8a><U+0590><0x94>

function getCtrlFromElementIE(el, tagName) {
	for (; el; el = el.parentElement)
	if ((tagName == null || el.tagName == tagName) && el.eventCtrl) return el.eventCtrl;
	return null;
}

// <0x83>C<0x83>x<0x83><0x93><0x83>g<0x82><0xa9><0x82><0xe7><0x83>C<0x83>x<0x83><0x93><0x83>g<0x90><0xa7><0x8c><0xe4><0x83>I<0x83>u<0x83>W<0x83>F<0x83>N<0x83>g<0x82><U+13F82><0xe9><0x8a><U+0590><0x94>

function getCtrlFromEventIE(e, tagName) { // IE<0x97>p
	var ctrl = _grabObj;
	var event = window.event;
	var fromCtrl, toCtrl;
	if (ctrl == null) {
		var mask = 0,
			type = event.type;
		switch (type) {
		case 'mouseover':
			fromCtrl = getCtrlFromElementIE(event.fromElement, tagName);
			toCtrl = getCtrlFromElementIE(event.toElement, tagName);
			if (fromCtrl != toCtrl) ctrl = toCtrl;
			if (!ctrl || (ctrl.mask & 1) == 0) ctrl = null;
			break;
		case 'mouseout':
			fromCtrl = getCtrlFromElementIE(event.fromElement, tagName);
			toCtrl = getCtrlFromElementIE(event.toElement, tagName);
			if (fromCtrl != toCtrl) ctrl = fromCtrl;
			if (!ctrl || (ctrl.mask & 1) == 0) ctrl = null;
			break;
		case 'mousedown':
		case 'mousemove':
		case 'mouseup':
			ctrl = getCtrlFromElementIE(event.srcElement, tagName);
			if (ctrl && (ctrl.mask & 2) != 0) break;
		default:
			ctrl = null;
			break;
		}
	}
	if (ctrl) {
		ctrl.pageX = document.body.scrollLeft + event.clientX;
		ctrl.pageY = document.body.scrollTop + event.clientY;
		ctrl.type = event.type;
	}
	return ctrl;
}

function getCtrlFromEventNN4(e, tagName) { // NN4<0x97>p
	var ctrl = _grabObj;
	if (ctrl == null) ctrl = e.target.eventCtrl;
	if (ctrl) {
		var mask = 0;
		switch (e.type) {
		case 'mouseover':
		case 'mouseout':
			mask |= 1;
			break;
		case 'mousedown':
		case 'mousemove':
		case 'mouseup':
			mask |= 2;
			break;
		}
		if ((ctrl.mask & mask) != 0) {
			ctrl.pageX = e.pageX;
			ctrl.pageY = e.pageY;
			ctrl.type = e.type;
		} else ctrl = null;
	}
	return ctrl;
}

function getCtrlFromEventMz(e, tagName) { // Mozilla<0x97>p
	var ctrl = _grabObj;
	if (ctrl == null) {
		for (var t = e.target; t != null; t = t.parentNode) {
			if ((tagName == null || (t.nodeType == Node.ELEMENT_NODE && t.tagName == tagName)) && ('undefined' != typeof(t.eventCtrl))) {
				ctrl = t.eventCtrl;
				break;
			}
		}
	}
	if (ctrl) {
		ctrl.pageX = e.clientX + window.scrollX;
		ctrl.pageY = e.clientY + window.scrollY;
		ctrl.type = e.type;
	}
	return ctrl;
}

function getCtrlFromEventNop(e, tagName) {
	return null;
} // Dummy
getCtrlFromEvent = (_dom == 1 || _dom == 2) ? getCtrlFromEventIE : (_dom == 3 ? getCtrlFromEventNN4 : (_dom == 4 ? getCtrlFromEventMz : getCtrlFromEventNop));

// mouseover <0x83>n<0x83><0x93><0x83>h<0x83><0x89>

function ech_mouseover(e) {
	var ctrl = getCtrlFromEvent(e, null);
	if (ctrl && ctrl.mouseover && !ctrl.mouseoverState) {
		ctrl.mouseoverState = true;
		if (ctrl.mouseover) ctrl.mouseover(ctrl, ctrl.mouseoverClient);
	}
}

// mouseout <0x83>n<0x83><0x93><0x83>h<0x83><0x89>

function ech_mouseout(e) {
	var ctrl = getCtrlFromEvent(e, null);
	if (ctrl && ctrl.mouseover && ctrl.mouseoverState) {
		ctrl.mouseoverState = false;
		if (ctrl.mouseout) ctrl.mouseout(ctrl, ctrl.mouseoutClient);
	}
}

// mousedown <0x83>n<0x83><0x93><0x83>h<0x83><0x89>

function ech_mousedown(e) {
	var ctrl = getCtrlFromEvent(e, null);
	if (ctrl && !ctrl.dragging) {
		_grabObj = ctrl;
		ctrl.dragging = true;
		ctrl.dragged = false;
		ctrl.startX = ctrl.curX = ctrl.pageX;
		ctrl.startY = ctrl.curY = ctrl.pageY;
		if (ctrl.mousedown) ctrl.mousedown(ctrl, ctrl.mousedownClient);
		return false;
	}
	return true;
}

// mousemove <0x83>n<0x83><0x93><0x83>h<0x83><0x89>

function ech_mousemove(e) {
	var ctrl = getCtrlFromEvent(e, null);
	if (ctrl && ctrl.dragging) {
		if (ctrl.curX != ctrl.pageX || ctrl.curY != ctrl.pageY) {
			if (Math.abs(ctrl.pageX - ctrl.startX) > ctrl.threshold || Math.abs(ctrl.pageY - ctrl.startY) > ctrl.threshold) ctrl.dragged = true;
			if (ctrl.mousemove) ctrl.mousemove(ctrl, ctrl.mousemoveClient);
			ctrl.curX = ctrl.pageX;
			ctrl.curY = ctrl.pageY;
		}
		return false;
	}
	return true;
}

// mouseup <0x83>n<0x83><0x93><0x83>h<0x83><0x89>

function ech_mouseup(e) {
	var ctrl = getCtrlFromEvent(e, null);
	if (ctrl && ctrl.dragging) {
		_grabObj = null;
		ctrl.dragging = false;
		if (ctrl.mouseup) ctrl.mouseup(ctrl, ctrl.mouseupClient);
		if (!ctrl.dragged && ctrl.mouseclick) ctrl.mouseclick(ctrl, ctrl.mouseclickClient);
		ctrl.curX = ctrl.pageX;
		ctrl.curY = ctrl.pageY;
		return false;
	}
	return true;
}

/**
 * Set the drag object and the methods to call on the events
 *  - mouseover
 *  - mouseout
 * The method you pass should expect to get 2 params
 *  a) A ctrl-object holding all event info
 *  b) A pass-through parameter that *you* may set.
 *
 * @param div   is the object you intend to move (a div-object)
 * @param ovrf  function to call on the onmousedown event
 * @param ovrc  pass-through parameter that you *may* set
 * @param outf  function to call on the onmousemove event
 * @param outc  pass-through parameter that you *may* set
 */

function ech_attachMouseOverOut(div, ovrf, ovrc, outf, outc) {
	if (!div.eventCtrl) div.eventCtrl = new EventCtrl(div);
	var ctrl = div.eventCtrl;
	ctrl.mouseoverState = false;
	ctrl.mouseover = ovrf;
	ctrl.mouseoverClient = ovrc;
	ctrl.mouseout = outf;
	ctrl.mouseoutClient = outc;
	div.onmouseover = ech_mouseover;
	div.onmouseout = ech_mouseout;
	ctrl.mask |= 1;
	return ctrl;
}

// mouseover/mouseout <0x83>n<0x83><0x93><0x83>h<0x83><0x89><0x93>o<0x98>^<0x8d><U+D3DC><0x8a><U+0590><0x94>

function ech_detachMouseOverOut(div) {
	var ctrl = div.eventCtrl;
	if (ctrl) {
		ctrl.div.onmouseover = null;
		ctrl.div.onmouseout = null;
		ctrl.mask = ~1;
	}
}

/**
 * Set the drag object and the methods to call on the events
 *  - onmousedown
 *  - onmousemove
 *  - onmouseup
 *  - onmouseclick
 * The method you pass should expect to get 2 params
 *  a) A ctrl-object holding all event info
 *  b) A pass-through parameter that *you* may set.
 *
 * @param div   is the object you intend to move (a div-object)
 * @param dwnf  function to call on the onmousedown event
 * @param dwnc  pass-through parameter that you *may* set
 * @param movf  function to call on the onmousemove event
 * @param movc  pass-through parameter that you *may* set
 * @param upf   function to call on the onmouseup event
 * @param upc   pass-through parameter that you *may* set
 * @param clkf  function to call on the mouseclick event
 * @param clkc  pass-through parameter that you *may* set
 */

function ech_attachMouseDrag(div, dwnf, dwnc, movf, movc, upf, upc, clkf, clkc) {
	var doc;

	if (_dom == 1 || _dom == 2) {
		doc = div;
		doc.onmousedown = ech_mousedown;
		document.onmousemove = ech_mousemove;
		document.onmouseup = ech_mouseup;
	} else if (_dom == 3) {
		doc = div.document;
		doc.onmousedown = ech_mousedown;
		doc.onmousemove = ech_mousemove;
		doc.onmouseup = ech_mouseup;
		doc.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
	} else if (_dom == 4) {
		doc = div;
		div.onmousedown = ech_mousedown;
		document.body.onmousemove = ech_mousemove;
		document.body.onmouseup = ech_mouseup;
	} else
	return null;
	if (!doc.eventCtrl) doc.eventCtrl = new EventCtrl(div);
	var ctrl = doc.eventCtrl;
	ctrl.dragging = false;
	ctrl.dragged = false;
	ctrl.startX = 0;
	ctrl.startY = 0;
	ctrl.curX = 0;
	ctrl.curY = 0;
	ctrl.mousedown = dwnf;
	ctrl.mousedownClient = dwnc;
	ctrl.mousemove = movf;
	ctrl.mousemoveClient = movc;
	ctrl.mouseup = upf;
	ctrl.mouseupClient = upc;
	ctrl.mouseclick = clkf;
	ctrl.mouseclickClient = clkc;
	ctrl.threshold = 5;
	ctrl.mask |= 2;
	return ctrl;
}

// <0x83>h<0x83><0x89><0x83>b<0x83>O<0x83>n<0x83><0x93><0x83>h<0x83><0x89><0x93>o<0x98>^<0x8d><U+D3DC><0x8a><U+0590><0x94>

function ech_detachMouseDrag(div) {
	var ctrl = null;
	if (_dom == 1 || _dom == 2) {
		ctrl = div.eventCtrl;
		if (ctrl) ctrl.div.onmousedown = null;
	} else if (_dom == 3) {
		ctrl = div.document.eventCtrl;
		if (ctrl) {
			var doc = ctrl.div.document;
			doc.releaseEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
			doc.onmousedown = null;
			doc.onmousemove = null;
			doc.onmouseup = null;
		}
	} else if (_dom == 4) {
		ctrl = div.eventCtrl;
		if (ctrl) ctrl.div.onmousedown = null;
	}
	if (ctrl) ctrl.mask &= ~2;
}

var Bs_FormUtil = true;
/********************************************************************************************
 * BlueShoes Framework; This file is part of the php application framework.
 * NOTE: This code is stripped (obfuscated). To get the clean documented code goto
 *       www.blueshoes.org and register for the free open source *DEVELOPER* version or
 *       buy the commercial version.
 *
 *       In case you've already got the developer version, then this is one of the few
 *       packages/classes that is only available to *PAYING* customers.
 *       To get it go to www.blueshoes.org and buy a commercial version.
 *
 * @copyright www.blueshoes.org
 * @author    Samuel Blume <sam at blueshoes dot org>
 * @author    Andrej Arn <andrej at blueshoes dot org>
 */

function bsFormToggleCheckbox(formName, fieldName) {
	if (document.forms[formName].elements[fieldName].checked) {
		document.forms[formName].elements[fieldName].checked = false;
	} else {
		document.forms[formName].elements[fieldName].checked = true;
	}
}

function bsFormToggleContainer(containerName) {
	if (document.all[containerName].style.display == "none") {
		document.all[containerName].style.display = "";
	} else {
		document.all[containerName].style.display = "none";
	}
}

function bsFormCheckMail(url, fieldObj, checkType) {
	var fieldName = fieldObj.name;
	var fieldID = fieldObj.id;
	var email = fieldObj.value;
	var iFrameObj = document.getElementById('bsMailCheck' + fieldName);
	url += "?email=" + email + "&checkType=" + checkType;
	var zeit = new Date();
	url += "&random=" + zeit.getMilliseconds();
	iFrameObj.src = url;
}

function bsFormJumpToFirstError(fieldName, formName, doSelect) {
	if (document.forms[formName].elements[fieldName]) {
		if (doSelect && (document.forms[formName].elements[fieldName].value != '')) {
			if (document.forms[formName].elements[fieldName].select) {
				document.forms[formName].elements[fieldName].select();
			}
		}
		if (document.forms[formName].elements[fieldName].focus) {
			document.forms[formName].elements[fieldName].focus();
		}
	}
}

function bsFormEnterSubmit(ev, myForm) {
	var ev = ('object' == typeof(window.event)) ? window.event : ev;
	if (ev && ev.keyCode == 13) {
		myForm.submit();
	}
	return true;
}

function bsFormNoEnter(ev) {
	var ev = ('object' == typeof(window.event)) ? window.event : ev;
	if (ev) return (ev.keyCode != 13);
	return true;
}

function bsFormEnterToTab(ev) {
	ev = ('object' == typeof(window.event)) ? window.event : ev;
	if (ev && ev.keyCode == 13) ev.keyCode = 9;
	return true;
}

function bsFormHandleEnter(ev, functionName) {
	var ev = ('object' == typeof(window.event)) ? window.event : ev;
	if (ev && ev.keyCode == 13) {
		return eval(functionName + '();');
	}
	return true;
}

function bsFormFieldSetFocusAndSelect(field, force) {
	if (typeof(field) == 'string') {
		field = document.getElementById(field);
	}
	if (!field) return false;
	try {
		if (force || !field.hasFocus) {
			field.focus();
			field.select();
		}
	} catch (e) {
		return false;
	}
	return true;
}

function bsFormDoHiddenSubmit(exitScreen, exitAction, nextScreen, nextAction, dataHash, submitToAction) {
	var formOutArray = new Array();
	var ii = 0;
	formOutArray[ii++] = '<form name="smSubmitForm" action="' + submitToAction + '" method="post">';
	formOutArray[ii++] = '<input type="hidden" name="bs_todo[nextScreen]" value="' + nextScreen + '">';
	formOutArray[ii++] = '<input type="hidden" name="bs_todo[exitScreen]" value="' + exitScreen + '">';
	switch (typeof(nextAction)) {
	case 'string':
		formOutArray[ii++] = '<input type="hidden" name="bs_todo[nextAction]" value="' + nextAction + '">';
		break;
	case 'object':
		for (var key in nextAction) {
			formOutArray[ii++] = '<input type="hidden" name="bs_todo[nextAction][' + key + ']" value="' + nextAction[key] + '">';
		}
	default:
	}
	switch (typeof(exitAction)) {
	case 'string':
		formOutArray[ii++] = '<input type="hidden" name="bs_todo[exitAction]" value="' + exitAction + '">';
		break;
	case 'object':
		for (var key in exitAction) {
			formOutArray[ii++] = '<input type="hidden" name="bs_todo[exitAction][' + key + ']" value="' + exitAction[key] + '">';
		}
	default:
	}
	dataHash = _recursiveObj2Hash(dataHash);
	for (var matrixStr in dataHash) {
		if (typeof(dataHash[matrixStr]) == 'function') continue;
		var valStr = bs_filterForHtml(dataHash[matrixStr] + '');
		formOutArray[ii++] = '<input type="hidden" name="' + "bs_todo[dataHash]" + matrixStr + '" value="' + valStr + '">';
	}
	formOutArray[ii++] = '</form>';
	var body = document.getElementsByTagName('body').item(0);
	body.innerHTML = formOutArray.join('');
	var form = document.smSubmitForm;
	form.submit();
}

function _recursiveObj2Hash(aObject, matrixStr, flatObjHash) {
	if (!flatObjHash) {
		flatObjHash = new Object();
		matrixStr = '';
	}
	if (typeof(aObject) != 'object') {
		flatObjHash[matrixStr] = aObject;
	} else {
		for (var key in aObject) {
			var newMatrixStr = matrixStr + '[' + key + ']';
			_recursiveObj2Hash(aObject[key], newMatrixStr, flatObjHash);
		}
	}
	return flatObjHash;
}

var slideJS = true;

var slider2;

//	Обрабатываем перерасчет КАСКО при изменении франшизы через текстовое поле

function funcInitSlider() {
	$(testerInput).keyup(function (event) {
		this.value = addSpaces(this.value.replace(/\s/g, ''));

		if (parseInt(this.value.replace(/\s/g, '')) <= slider2.maxVal) slider2.setValue(parseInt(this.value.replace(/\s/g, '')));
		else if (parseInt(this.value.replace(/\s/g, '')) > slider2.maxVal) slider2.setValue(parseInt(slider2.maxVal));
		else if (parseInt(this.value.replace(/\s/g, '')) < slider2.minVal) slider2.setValue(parseInt(slider2.minVal));
		else
		slider2.setValue(parseInt(slider2.minVal));
		if (event.keyCode == 13) $(this).blur();
	}).blur(function () {
		calculateCasko();
	});
}

//	Инициализируем Слайдер

function initSlider(max, step, range) {

	if (typeof testerInput == 'undefined') testerInput = $(".sliderInput");

	slider2 = new Bs_Slider();
	slider2.attachOnChange(bsSliderChange);
	slider2.width = 614;
	slider2.height = 24;
	slider2.minVal = 0;
	slider2.maxVal = parseInt(max);
	slider2.valueInterval = parseInt(step);
	slider2.arrowAmount = 0;
	slider2.valueDefault = parseInt(testerInput.get(0).value);
	slider2.imgDir = '';
	slider2.setBackgroundImage('./img/fr_slider1.png', 'no-repeat');
	$('#sliderImg').attr('src', './img/bgnd_' + range + '.png');
	slider2.setSliderIcon('./img/arrow6.gif', 9, 36);
	slider2.useInputField = 0;
	slider2.styleValueFieldClass = 'sliderInput';
	slider2.colorbar = new Object();
	slider2.colorbar['color'] = '';
	slider2.colorbar['height'] = 0;
	slider2.colorbar['widthDifference'] = 0;
	slider2.colorbar['offsetLeft'] = 0;
	slider2.colorbar['offsetTop'] = 0;
	slider2.drawInto('sliderDiv1');
	slider2.attachOnSlideEnd(calculateCasko);
	if (parseInt(testerInput.get(0).value.replace(/\s/g, '')) <= slider2.maxVal) slider2.setValue(parseInt(testerInput.get(0).value.replace(/\s/g, '')));


	if (parseInt(testerInput.get(0).value.replace(/\s/g, '')) <= slider2.maxVal) slider2.setValue(parseInt(testerInput.get(0).value.replace(/\s/g, '')));
	funcInitSlider();
}

function initSlider2(max, step, range) {

}
/**
 * @param object sliderObj
 * @param int val (the value)
 */

function bsSliderChange(sliderObj, value, newPos) {
	testerInput.val(value);
	testerInput.trigger('keyup');
}
/**
 * @param object sliderObj
 * @param int val (the value)
 */

function bsSliderStart(sliderObj, val, newPos) {}
/**
 * @param object sliderObj
 * @param int val (the value)
 */

function bsSliderEnd(sliderObj, val, newPos) {
	sliderObj.valueInterval = 0.25;
	sliderObj.setValue(newPos);
	sliderObj.valueInterval = 0.05;
}

//	Оформляем текстовое поле со значением франшизы

function sliderSpaces() {
	if (typeof testerInput == 'undefined') testerInput = $(".sliderInput");
	testerInput.each(function () {
		$(this).val(addSpaces($(this).val().replace(/\s/g, '')));
	});
}
var qTip = true;

var qTipTag = "a,label,input,td,img,span,div"; //Which tag do you want to qTip-ize? Keep it lowercase!//
var qTipX = 20; //This is qTip's X offset//
var qTipY = 15; //This is qTip's Y offset//

//There's No need to edit anything below this line//
tooltip = {
	name: "qTip",
	offsetX: qTipX,
	offsetY: qTipY,
	tip: null,
	currX: 0,
	currY: 0
}

tooltip.init = function () {
	var tipNameSpaceURI = "http://www.w3.org/1999/xhtml";
	if (!tipContainerID) {
		var tipContainerID = "qTip";
	}
	var tipContainer = document.getElementById(tipContainerID);

	if (!tipContainer) {
		tipContainer = document.createElementNS ? document.createElementNS(tipNameSpaceURI, "div") : document.createElement("div");
		tipContainer.setAttribute("id", tipContainerID);
		document.getElementsByTagName("body").item(0).appendChild(tipContainer);
	}

	if (!document.getElementById) return;
	this.tip = document.getElementById(this.name);
	if (this.tip) document.onmousemove = function (evt) {
		tooltip.move(evt)
	};

	var a, sTitle, elements;

	var elementList = qTipTag.split(",");
	for (var j = 0; j < elementList.length; j++) {
		elements = document.getElementsByTagName(elementList[j]);
		if (elements) {
			for (var i = 0; i < elements.length; i++) {
				a = elements[i];
				sTitle = a.getAttribute("title");
				if (sTitle) {
					a.setAttribute("tiptitle", sTitle);
					a.removeAttribute("title");
					a.removeAttribute("alt");
					a.onmouseover = function () {
						tooltip.show(this.getAttribute('tiptitle'))
					};
					a.onmouseout = function () {
						tooltip.hide()
					};
				}
			}
		}
	}
}
tooltip.move = function (evt) {
	var x = 0,
		y = 0;
	if (document.all) { //IE
		x = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
		y = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
		x += window.event.clientX;
		y += window.event.clientY;

	} else { //Good Browsers
		x = evt.pageX;
		y = evt.pageY;
	}
	this.currX = x;
	this.currY = y;
	if ((getClientWidth() - x) < 250) this.tip.style.left = (x + this.offsetX - 300) + "px";
	else
	this.tip.style.left = (x + this.offsetX) + "px";
	var yTMP = parseInt($("#qTip").css('height')) > 0 ? parseInt($("#qTip").css('height')) : 0;
	if (getClientHeight() - (y - getBodyScrollTop()) < parseInt($("#qTip").css('height')) || getClientHeight() - (y - getBodyScrollTop()) < 220) this.tip.style.top = (y + this.offsetY - yTMP - 30) + "px";
	else
	this.tip.style.top = (y + this.offsetY) + "px";
	//$("#prevCalcHeader").text(y);
	//$("#prevCalcHeader").text($("#qTip").css('height'));
}

tooltip.show = function (text) {
	if (!this.tip) return;
	this.tip.innerHTML = text;
	this.tip.style.display = "block";
}

tooltip.hide = function () {
	if (!this.tip) return;
	this.tip.innerHTML = "";
	this.tip.style.display = "none";
}

window.onload = function () {
	tooltip.init();
}

function getClientWidth() {
	return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientWidth : document.body.clientWidth;
}

function getClientHeight() {
	return document.compatMode == 'CSS1Compat' && !window.opera ? document.documentElement.clientHeight : document.body.clientHeight;
}
setTimeout('tooltip.init()', 8000);

function getBodyScrollTop() {
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

//   Модуль javascript навигации по странице

function GetPos(elem) {
	var offTrial = document.getElementById(elem);
	var offL = 0;
	var offT = 0;
	while (offTrial) {
		offL += offTrial.offsetLeft;
		offT += offTrial.offsetTop;
		offTrial = offTrial.offsetParent;
	}
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
		offL += document.body.leftMargin;
		offT += document.body.topMargin;
	}
	return {
		x: offL,
		y: offT
	}
}

function GetPosObj(obj) {
	var offL = 0;
	var offT = 0;
	while (obj) {
		offL += obj.offsetLeft;
		offT += obj.offsetTop;
		obj = obj.offsetParent;
	}
	if (navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined") {
		offL += document.body.leftMargin;
		offT += document.body.topMargin;
	}
	return {
		x: offL,
		y: offT
	}
}

//   Функция скроллинга

function scrollIt(obj, href) {
	elto = href.toString();
	elto = elto.substr(elto.indexOf('#') + 1)
	elposfrom = GetPosObj(obj);
	elposto = GetPos(elto);
	yfrom = elposfrom.y;
	yto = elposto.y;
	i = yfrom;
	window.scrollTo(0, elposto.y);
}
